#ifndef _JIAJIA_LMCC_H
#define _JIAJIA_LMCC_H
#include<stdint.h>
#include<stdlib.h>

#include"yu.h"
#define _JiaJiaLmcc_word_err -1
#define _JiaJiaLmcc_word_empty 0
#define _JiaJiaLmcc_word_eof 1
#define _JiaJiaLmcc_word_id 2
#define _JiaJiaLmcc_word_num 3
#define _JiaJiaLmcc_word_realnum 4
#define _JiaJiaLmcc_word_str 5
#define _JiaJiaLmcc_word_text 6
#define _JiaJiaLmcc_word_note 7
#define _JiaJiaLmcc_word_blank 8
#define _JiaJiaLmcc_word_add 9
#define _JiaJiaLmcc_word_sub 10
#define _JiaJiaLmcc_word_mult 11
#define _JiaJiaLmcc_word_dev 12
#define _JiaJiaLmcc_word_link 13
#define _JiaJiaLmcc_word_assign 14
#define _JiaJiaLmcc_word_eq 15
#define _JiaJiaLmcc_word_lt 16
#define _JiaJiaLmcc_word_gt 17
#define _JiaJiaLmcc_word_le 18
#define _JiaJiaLmcc_word_ge 19
#define _JiaJiaLmcc_word_ne 20
#define _JiaJiaLmcc_word_lbracket 21
#define _JiaJiaLmcc_word_rbracket 22
#define _JiaJiaLmcc_word_lparen 23
#define _JiaJiaLmcc_word_rparen 24
#define _JiaJiaLmcc_word_lbrace 25
#define _JiaJiaLmcc_word_rbrace 26
#define _JiaJiaLmcc_word_comma 27
#define _JiaJiaLmcc_word_semicolon 28
#define _JiaJiaLmcc_word_dot 29
#define _JiaJiaLmcc_word_colon 30
#define _JiaJiaLmcc_word_dun 31
#define _JiaJiaLmcc_word_at 32
#define _JiaJiaLmcc_word_de 33
#define _JiaJiaLmcc_word_true 34
#define _JiaJiaLmcc_word_false 35
#define _JiaJiaLmcc_word_or 36
#define _JiaJiaLmcc_word_and 37
#define _JiaJiaLmcc_word_shi 38
#define _JiaJiaLmcc_word_fou 39
#define _JiaJiaLmcc_word_shifoueq 40
#define _JiaJiaLmcc_word_shifoune 41
#define _JiaJiaLmcc_word_shifoult 42
#define _JiaJiaLmcc_word_shifougt 43
#define _JiaJiaLmcc_word_shifoule 44
#define _JiaJiaLmcc_word_shifouge 45
#define _JiaJiaLmcc_word_if 46
#define _JiaJiaLmcc_word_elif 47
#define _JiaJiaLmcc_word_else 48
#define _JiaJiaLmcc_word_until 49
#define _JiaJiaLmcc_word_loop 50
#define _JiaJiaLmcc_word_loopfactor 51
#define _JiaJiaLmcc_word_break 52
#define _JiaJiaLmcc_word_continue 53
#define _JiaJiaLmcc_item_lmcc 255
#define _JiaJiaLmcc_item_block 256
#define _JiaJiaLmcc_item_stmts 257
#define _JiaJiaLmcc_item_stmt 258
#define _JiaJiaLmcc_item_shifou 259
#define _JiaJiaLmcc_item_expr 260
#define _JiaJiaLmcc_item_orexpr 261
#define _JiaJiaLmcc_item_andexpr 262
#define _JiaJiaLmcc_item_eqexpr 263
#define _JiaJiaLmcc_item_compexpr 264
#define _JiaJiaLmcc_item_linkexpr 265
#define _JiaJiaLmcc_item_arithexpr 266
#define _JiaJiaLmcc_item_term 267
#define _JiaJiaLmcc_item_value 268
#define _JiaJiaLmcc_item_factor 269
#define _JiaJiaLmcc_item_idexpr 270
#define _JiaJiaLmcc_item_constant 271
#define _JiaJiaLmcc_item_seqlbracket 272
#define _JiaJiaLmcc_item_seqexpr 273
#define _JiaJiaLmcc_item_seqhead 274
#define _JiaJiaLmcc_item_tablelparen 275
#define _JiaJiaLmcc_item_tableexpr 276
#define _JiaJiaLmcc_item_tablehead 277
#define _JiaJiaLmcc_item_scriptat 278
#define _JiaJiaLmcc_item_scriptstmts 279
#define _JiaJiaLmcc_item_scriptstmt 280
#define _JiaJiaLmcc_item_scriptlbrace 281
#define _JiaJiaLmcc_item_scriptexpr 282
#define _JiaJiaLmcc_item_script 283

extern const char* _JiaJiaLmcc_word_err_str;
extern const char* _JiaJiaLmcc_word_strs[54];
extern const char* _JiaJiaLmcc_item_strs[29];
extern const char* JiaJiaLmcc_encode_str(int16_t);

#define _JiaJia_attr_blank 2
#define _JiaJia_attr_eof 1
#define _JiaJia_attr_id 8
#define _JiaJia_attr_note 3
#define _JiaJia_attr_note_exit 4
#define _JiaJia_attr_num 5
#define _JiaJia_attr_str 6
#define _JiaJia_attr_str_exit 7
#define _JiaJia_attr_zero 0

typedef int16_t(*JiaJiaLmcc_accept_fn)(int16_t);
extern const int32_t _JiaJiaLmcc_state_dim_0[143];
extern const int32_t _JiaJiaLmcc_state_dim_1[3];
extern const int32_t _JiaJiaLmcc_state_dim_2[13];
extern const int32_t _JiaJiaLmcc_state_dim_3[5];
extern const int32_t _JiaJiaLmcc_state_dim_4[3];
extern const int32_t _JiaJiaLmcc_state_dim_5[23];
extern const int32_t _JiaJiaLmcc_state_dim_6[5];
extern const int32_t _JiaJiaLmcc_state_dim_7[3];
extern const int32_t _JiaJiaLmcc_state_dim_8[3];
extern const int32_t _JiaJiaLmcc_state_dim_9[3];
extern const int32_t _JiaJiaLmcc_state_dim_10[3];
extern const int32_t _JiaJiaLmcc_state_dim_11[3];
extern const int32_t _JiaJiaLmcc_state_dim_12[3];
extern const int32_t _JiaJiaLmcc_state_dim_13[3];
extern const int32_t _JiaJiaLmcc_state_dim_14[5];
extern const int32_t _JiaJiaLmcc_state_dim_15[3];
extern const int32_t _JiaJiaLmcc_state_dim_16[5];
extern const int32_t _JiaJiaLmcc_state_dim_17[5];
extern const int32_t _JiaJiaLmcc_state_dim_18[3];
extern const int32_t _JiaJiaLmcc_state_dim_19[3];
extern const int32_t _JiaJiaLmcc_state_dim_20[5];
extern const int32_t _JiaJiaLmcc_state_dim_21[3];
extern const int32_t _JiaJiaLmcc_state_dim_22[3];
extern const int32_t _JiaJiaLmcc_state_dim_23[3];
extern const int32_t _JiaJiaLmcc_state_dim_24[3];
extern const int32_t _JiaJiaLmcc_state_dim_25[3];
extern const int32_t _JiaJiaLmcc_state_dim_26[3];
extern const int32_t _JiaJiaLmcc_state_dim_27[3];
extern const int32_t _JiaJiaLmcc_state_dim_28[3];
extern const int32_t _JiaJiaLmcc_state_dim_29[3];
extern const int32_t _JiaJiaLmcc_state_dim_30[3];
extern const int32_t _JiaJiaLmcc_state_dim_31[3];
extern const int32_t _JiaJiaLmcc_state_dim_32[3];
extern const int32_t _JiaJiaLmcc_state_dim_33[3];
extern const int32_t _JiaJiaLmcc_state_dim_34[3];
extern const int32_t _JiaJiaLmcc_state_dim_35[3];
extern const int32_t _JiaJiaLmcc_state_dim_36[3];
extern const int32_t _JiaJiaLmcc_state_dim_37[3];
extern const int32_t _JiaJiaLmcc_state_dim_38[3];
extern const int32_t _JiaJiaLmcc_state_dim_39[3];
extern const int32_t _JiaJiaLmcc_state_dim_40[3];
extern const int32_t _JiaJiaLmcc_state_dim_41[3];
extern const int32_t _JiaJiaLmcc_state_dim_42[3];
extern const int32_t _JiaJiaLmcc_state_dim_43[3];
extern const int32_t _JiaJiaLmcc_state_dim_44[3];
extern const int32_t _JiaJiaLmcc_state_dim_45[3];
extern const int32_t _JiaJiaLmcc_state_dim_46[3];
extern const int32_t _JiaJiaLmcc_state_dim_47[3];
extern const int32_t _JiaJiaLmcc_state_dim_48[5];
extern const int32_t _JiaJiaLmcc_state_dim_49[3];
extern const int32_t _JiaJiaLmcc_state_dim_50[3];
extern const int32_t _JiaJiaLmcc_state_dim_51[3];
extern const int32_t _JiaJiaLmcc_state_dim_52[5];
extern const int32_t _JiaJiaLmcc_state_dim_53[5];
extern const int32_t _JiaJiaLmcc_state_dim_54[11];
extern const int32_t _JiaJiaLmcc_state_dim_55[5];
extern const int32_t _JiaJiaLmcc_state_dim_56[3];
extern const int32_t _JiaJiaLmcc_state_dim_57[9];
extern const int32_t _JiaJiaLmcc_state_dim_58[5];
extern const int32_t _JiaJiaLmcc_state_dim_59[3];
extern const int32_t _JiaJiaLmcc_state_dim_60[5];
extern const int32_t _JiaJiaLmcc_state_dim_61[5];
extern const int32_t _JiaJiaLmcc_state_dim_62[5];
extern const int32_t _JiaJiaLmcc_state_dim_63[5];
extern const int32_t _JiaJiaLmcc_state_dim_64[5];
extern const int32_t _JiaJiaLmcc_state_dim_65[3];
extern const int32_t _JiaJiaLmcc_state_dim_66[5];
extern const int32_t _JiaJiaLmcc_state_dim_67[3];
extern const int32_t _JiaJiaLmcc_state_dim_68[5];
extern const int32_t _JiaJiaLmcc_state_dim_69[5];
extern const int32_t _JiaJiaLmcc_state_dim_70[5];
extern const int32_t _JiaJiaLmcc_state_dim_71[5];
extern const int32_t _JiaJiaLmcc_state_dim_72[5];
extern const int32_t _JiaJiaLmcc_state_dim_73[3];
extern const int32_t _JiaJiaLmcc_state_dim_74[5];
extern const int32_t _JiaJiaLmcc_state_dim_75[3];
extern const int32_t _JiaJiaLmcc_state_dim_76[5];
extern const int32_t _JiaJiaLmcc_state_dim_77[3];
extern const int32_t _JiaJiaLmcc_state_dim_78[5];
extern const int32_t _JiaJiaLmcc_state_dim_79[5];
extern const int32_t _JiaJiaLmcc_state_dim_80[5];
extern const int32_t _JiaJiaLmcc_state_dim_81[5];
extern const int32_t _JiaJiaLmcc_state_dim_82[5];
extern const int32_t _JiaJiaLmcc_state_dim_83[3];
extern const int32_t _JiaJiaLmcc_state_dim_84[5];
extern const int32_t _JiaJiaLmcc_state_dim_85[5];
extern const int32_t _JiaJiaLmcc_state_dim_86[3];
extern const int32_t _JiaJiaLmcc_state_dim_87[9];
extern const int32_t _JiaJiaLmcc_state_dim_88[5];
extern const int32_t _JiaJiaLmcc_state_dim_89[3];
extern const int32_t _JiaJiaLmcc_state_dim_90[5];
extern const int32_t _JiaJiaLmcc_state_dim_91[5];
extern const int32_t _JiaJiaLmcc_state_dim_92[5];
extern const int32_t _JiaJiaLmcc_state_dim_93[5];
extern const int32_t _JiaJiaLmcc_state_dim_94[5];
extern const int32_t _JiaJiaLmcc_state_dim_95[3];
extern const int32_t _JiaJiaLmcc_state_dim_96[5];
extern const int32_t _JiaJiaLmcc_state_dim_97[3];
extern const int32_t _JiaJiaLmcc_state_dim_98[5];
extern const int32_t _JiaJiaLmcc_state_dim_99[3];
extern const int32_t _JiaJiaLmcc_state_dim_100[7];
extern const int32_t _JiaJiaLmcc_state_dim_101[5];
extern const int32_t _JiaJiaLmcc_state_dim_102[5];
extern const int32_t _JiaJiaLmcc_state_dim_103[3];
extern const int32_t _JiaJiaLmcc_state_dim_104[5];
extern const int32_t _JiaJiaLmcc_state_dim_105[3];
extern const int32_t _JiaJiaLmcc_state_dim_106[3];
extern const int32_t _JiaJiaLmcc_state_dim_107[5];
extern const int32_t _JiaJiaLmcc_state_dim_108[3];
extern const int32_t _JiaJiaLmcc_state_dim_109[5];
extern const int32_t _JiaJiaLmcc_state_dim_110[9];
extern const int32_t _JiaJiaLmcc_state_dim_111[3];
extern const int32_t _JiaJiaLmcc_state_dim_112[5];
extern const int32_t _JiaJiaLmcc_state_dim_113[3];
extern const int32_t _JiaJiaLmcc_state_dim_114[5];
extern const int32_t _JiaJiaLmcc_state_dim_115[3];
extern const int32_t _JiaJiaLmcc_state_dim_116[3];
extern const int32_t _JiaJiaLmcc_state_dim_117[3];
extern const int32_t _JiaJiaLmcc_state_dim_118[3];
extern const int32_t _JiaJiaLmcc_state_dim_119[3];
extern const int32_t *_JiaJiaLmcc_state_table[120];
extern JiaJiaLmcc_accept_fn _JiaJiaLmcc_accept_table[120];

extern int32_t JiaJiaLmcc_next_state(int32_t, int32_t);
extern int16_t JiaJiaLmcc_next_word();

#include"jiajia_unicode.h"
#include"jiajia_word.h"

enum _JiaJia_LMCC_ACTION_ENUM{
    _JiaJia_LMCC_ACTION_ERR = 0,
    _JiaJia_LMCC_ACTION_SHI,
    _JiaJia_LMCC_ACTION_REDUCE,
    _JiaJia_LMCC_ACTION_ACCEPT
    };

typedef int8_t(*JiaJiaLmcc_reduce_fn)(void);
extern const int16_t _JiaJiaLmcc_action_value_table[491][54];
extern const uint8_t _JiaJiaLmcc_action_table[491][54];
extern const uint16_t _JiaJiaLmcc_goto_table[491][29];
extern const uint16_t _JiaJiaLmcc_product_size[75];
extern const int16_t _JiaJiaLmcc_product_head[75];
extern JiaJiaLmcc_reduce_fn _JiaJiaLmcc_reduce[75];

#define JiaJia_LMCC_ACTION_STACK_SIZE 1024
#define JiaJiaLmcc_pdata_alloc() Yu_alloc(sizeof(JiaJiaLmcc_pdata_t), JiaJiaLmcc_pdata_meminit, JiaJiaLmcc_pdata_memfree)
typedef struct JiaJiaLmcc_pdata{
    int16_t action_stack[JiaJia_LMCC_ACTION_STACK_SIZE];
    int32_t state;
    int16_t word;
    int8_t action_top;
    int8_t action;
    int8_t action_val;
    struct JiaJiaLmcc_pdata *next;
} JiaJiaLmcc_pdata_t, *JiaJiaLmcc_pdata_pt;

extern void JiaJiaLmcc_pdata_meminit(void *pt, size_t);
extern void JiaJiaLmcc_pdata_memfree(void *pt, size_t);
extern int JiaJiaLmcc_parse();

#include"jiajia_reduce.h"
#include"jiajia_file.h"

#endif
